Was ist common subexpression elimination?

Das Entfernen gemeinsamer Teilausdrücke () beschreibt eine Compiler-Optimierung. Es wird dabei nach Teilausdrücken gesucht, die zuvor bereits berechnet wurden. Wenn solche gefunden werden, wird das vorherige Ergebnis in einer Variable gespeichert und die wiederholte Berechnung durch die Variable ersetzt.1

Beispiel

In folgendem Programmabschnitt wird zweimal der Wert von a * b berechnet:

x = a * b + c;
y = a * b + d;

Die CSE transformiert den Abschnitt dann so, dass das erste Ergebnis zwischengespeichert wird:

_tmp = a * b;
x = _tmp + c;
y = _tmp + d;

Einzelnachweise

<references />

Ursprüngliche Quelle: common subexpression elimination. Geteilt mit Creative Commons Attribution-ShareAlike 3.0 License

Footnotes

  1. Steven S. Muchnick: Advanced Compiler Design & Implementation, Morgan Kaufmann Publishers, 1997, ISBN 1-55860-320-4

Kategorien